home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / lisp / egg / egg-quail.el.z / egg-quail.el
Encoding:
Text File  |  1998-05-21  |  2.8 KB  |  92 lines

  1. ;;; Quail <-> EGG interface
  2.  
  3. (require 'quail)
  4.  
  5. (or (featurep 'egg)
  6.     (error "You don't have EGG feature."))
  7.  
  8. (defconst quail-mode-egg-map (make-keymap))
  9. (set-keymap-parents quail-mode-egg-map (list quail-mode-map))
  10. (define-key quail-mode-egg-map " " 'quail-henkan-region)
  11.  
  12. (defvar quail-henkan-start nil)
  13. (make-variable-buffer-local 'quail-henkan-start)
  14.  
  15. (defvar quail-henkan-start-char ?$B!~(B)
  16.  
  17. (defconst quail-henkan-mode-map (make-keymap))
  18. (set-keymap-parents quail-henkan-mode-map (list henkan-mode-map))
  19.  
  20. (substitute-key-definition 'self-insert-command
  21.                'quail-henkan-kakutei-and-self-insert
  22.                quail-henkan-mode-map)
  23.  
  24. (define-key quail-henkan-mode-map "\C-k" 'quail-henkan-kakutei)
  25. (define-key quail-henkan-mode-map "\C-l" 'quail-henkan-kakutei)
  26. (define-key quail-henkan-mode-map "\C-m" 'quail-henkan-kakutei)
  27. (define-key quail-henkan-mode-map "\C-c" 'quail-henkan-quit)
  28. (define-key quail-henkan-mode-map "\C-g" 'quail-henkan-quit)
  29. (define-key quail-henkan-mode-map "\177" 'quail-henkan-quit)
  30. (define-key quail-henkan-mode-map "\eg" 'quail-henkan-quit)
  31.  
  32. (defun quail-henkan-mark ()
  33.   "Set mark at the current position to indicate starting point of henkan."
  34.   (interactive)
  35.   (quail-delete-region)
  36.   (quail-init-state)
  37.   (setq quail-henkan-start (point-marker))
  38.   (insert quail-henkan-start-char))
  39.  
  40. (defun quail-henkan-region ()
  41.   (interactive)
  42.   (quail-delete-region)
  43.   (quail-init-state)
  44.   (if quail-henkan-start
  45.       (let ((pos (point-marker)))
  46.     (goto-char quail-henkan-start)
  47.     (if (and (= (following-char) quail-henkan-start-char)
  48.          (progn (delete-char 1)
  49.             (< quail-henkan-start pos)))
  50.         (let ((henkan-mode-map quail-henkan-mode-map))
  51.           (henkan-region quail-henkan-start pos))
  52.       (goto-char pos))
  53.     (setq quail-henkan-start nil))))
  54.  
  55. (defun quail-henkan-kakutei-and-self-insert ()
  56.   (interactive)
  57.   (setq unread-command-events (list last-command-event))
  58.   (quail-henkan-kakutei))
  59.  
  60. (defun quail-henkan-reset ()
  61.   (egg:bunsetu-attribute-off bunsetu-number)
  62.   (egg:henkan-attribute-off)
  63.   (goto-char egg:region-start)
  64.   (delete-region (- egg:region-start (length egg:henkan-open))
  65.          (+ egg:region-end (length egg:henkan-close)))
  66.   (set-marker egg:region-start nil) 
  67.   (set-marker egg:region-end nil) 
  68.   (setq quail-henkan-start nil)
  69.   (quail-init-state)
  70.   (use-local-map (quail-mode-map))
  71.   (egg:mode-line-display))
  72.  
  73. (defun quail-henkan-kakutei ()
  74.   (interactive)
  75.   (quail-henkan-reset)
  76.   (let ((i 0) (max (wnn-server-bunsetu-suu)))
  77.     (while (< i max)
  78.       (insert (car (wnn-server-bunsetu-kanji i )))
  79.       (if (not overwrite-mode)
  80.       (undo-boundary))
  81.       (setq i (1+ i))
  82.       ))
  83.   (wnn-server-hindo-update)
  84.   (egg:mode-line-display))
  85.  
  86. (defun quail-henkan-quit ()
  87.   (interactive)
  88.   (quail-henkan-reset)
  89.   (insert egg:kanji-kanabuff)
  90.   (wnn-server-henkan-quit)
  91.   (egg:mode-line-display))
  92.